{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams[\"font.family\"] = \"serif\" \n",
    "plt.rcParams[\"figure.figsize\"] = (5,3)\n",
    "\n",
    "SMALL_SIZE = 11\n",
    "MEDIUM_SIZE = 11\n",
    "BIGGER_SIZE = 12\n",
    "\n",
    "plt.rc('font', size=SMALL_SIZE)          # controls default text sizes\n",
    "plt.rc('axes', titlesize=SMALL_SIZE)     # fontsize of the axes title\n",
    "plt.rc('axes', labelsize=MEDIUM_SIZE)    # fontsize of the x and y labels\n",
    "plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels\n",
    "plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels\n",
    "plt.rc('legend', fontsize=SMALL_SIZE)    # legend fontsize\n",
    "plt.rc('figure', titlesize=BIGGER_SIZE)  # fontsize of the figure title"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "all_seeds = [0, 10, 123, 231, 321]\n",
    "SEED = all_seeds[0]\n",
    "DATASET = 'Pubmed'\n",
    "\n",
    "seed_influence_results = []\n",
    "for SEED in all_seeds:\n",
    "    with open('results/%s_weight_results_influence_seed%d.json'%(DATASET, SEED), 'r') as f:\n",
    "        results = json.load(f)\n",
    "        seed_influence_results.append(results)\n",
    "        \n",
    "seed_fisher_results = []\n",
    "for SEED in all_seeds:\n",
    "    with open('results/%s_weight_results_fisher_seed%d.json'%(DATASET, SEED), 'r') as f:\n",
    "        results = json.load(f)\n",
    "        seed_fisher_results.append(results)\n",
    "        \n",
    "seed_project_results = []\n",
    "for SEED in all_seeds:\n",
    "    with open('results/%s_weight_results_projection_seed%d.json'%(DATASET, SEED), 'r') as f:\n",
    "        results = json.load(f)\n",
    "        seed_project_results.append(results)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "seed_influence_results  = np.array(seed_influence_results)\n",
    "seed_project_results = np.array(seed_project_results)\n",
    "seed_fisher_results = np.array(seed_fisher_results)\n",
    "\n",
    "seed_influence_results = seed_influence_results[:, :, 0] / seed_influence_results[:, :, 3]\n",
    "seed_project_results   = seed_project_results[:, :, 0]   / seed_project_results[:, :, 3]\n",
    "seed_fisher_results    = seed_fisher_results[:, :, 0]    / seed_fisher_results[:, :, 3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5, 181)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "seed_influence_results.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "seed_influence_results_mean = np.mean(seed_influence_results, axis=0)\n",
    "seed_influence_results_stds = np.std(seed_influence_results, axis=0)\n",
    "\n",
    "seed_fisher_results_mean = np.mean(seed_fisher_results, axis=0)\n",
    "seed_fisher_results_stds = np.std(seed_fisher_results, axis=0)\n",
    "\n",
    "seed_project_results_mean = np.mean(seed_project_results, axis=0)\n",
    "seed_project_results_stds = np.std(seed_project_results, axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_delete_data = len(seed_influence_results_mean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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f5V16QzDaNUcf/zxLFq0KNditGlCzU6hHpOJfYRjGIbR/KSjxJNnp6TEL05lGIZhNCPpvNjsISLn42an9BCRQaSenbJDijjDMAyjCbHZKYZhGK0Ym51iGIbRiklrFUNVrfKzUn6lqp+n2JYAjzSppIZhNDnJ7tn++Mc/plUutq5JWVkZ+fn59OnTh+7duzextAakN8WwE1DpFzlfW4+fywtwThsMw2ilxNyz9e7du95VDJO59tpr+clPfsL555/PzJkz6du3L4ceemgTS2tAenfii4G/+f0KYLb/n7yZ70vDaKcsXbo0vmLgueeem3LlwtZCa1syIh0lPgb4pd+fj7N/m03cMNoBs2bNon///pSWljJp0iTKy8vZa6+9mDFjRjzP8ccfz1dffcWVV15JWVlZrTW8P/vss7iJJsYpp5xCUVFRwlK0ixcv5oQTTmDw4MEcddRR8RURY20UFRUxceJETjvtNA444ADOPPNMqqqq4nk+/PBDTjzxRI455hiOOuooLrjgApYtWwbA2rVrufDCCznyyCMZNGgQY8aMiS9729pp0Jyiqs8EgvbFpmFkg5tDOcLKUptrQxcpLy9n4sSJfP/736dPnz7MmjWLefPmMWzYMM455xzy8/P5+9//TmlpKRMnTozfwQY90ffu3Ttuoonx9NNPx12rQY17tZ///OdccsklrF27loMPPphddtmF4cOHx9tYuHAhTz31FJFIhP3335+nn36aM844gw0bNnD88cczfvx4LrzwQqLRKKeccgpvvfUWvXr1YuTIkXTq1Il//vOfqCpnnXUWN954I/fcc0+mo9liCOXZp4GvMv/dSFkMw2ihdO7cOb541SGHHMK6detYtWpV3AFEY3n22Wf59ttvueiiiwAoLi7mlFNO4cEHH2T48OHxfKeddhoiQocOHejfvz8ff/wx4Nyzfffdd4waNQpwS+NOmDCBTp06sWLFCp5++mnmzZuHiCAinHfeeZx33nlxJX722WezYsUKANasWcOSJUsSTCoTJ06kf//+Welrtgnrnq0+HgaOy2J9hmG0EHr06BHfLyoqApwnnmyxdOlSVJUhQ4bE49auXcuOO+6YkC/oXq2oqCguw9KlS2u5Z+vTpw8Ab77pLL1XX301hYWFcdl79uzJ2rVrKS4ujq+LDs4mfvPNNyeYeloy6cxO+TTNunZsOIthGEBG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",
      "text/plain": [
       "<Figure size 360x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots()\n",
    "\n",
    "x_axis = (np.arange(num_delete_data) + 1) / num_delete_data\n",
    "######################################\n",
    "\n",
    "y_mean = seed_project_results_mean\n",
    "y_std  = seed_project_results_stds\n",
    "axs.plot(x_axis, y_mean, linewidth=3, linestyle='-', label='Projector')\n",
    "axs.fill_between(x_axis, y_mean-y_std, y_mean+y_std, alpha=0.15)\n",
    "\n",
    "######################################\n",
    "\n",
    "y_mean = seed_influence_results_mean\n",
    "y_std  = seed_influence_results_stds\n",
    "axs.plot(x_axis, y_mean, linewidth=3, linestyle='-', label='Influence+')\n",
    "axs.fill_between(x_axis, y_mean-y_std, y_mean+y_std, alpha=0.15)\n",
    "\n",
    "######################################\n",
    "\n",
    "y_mean = seed_fisher_results_mean\n",
    "y_std  = seed_fisher_results_stds\n",
    "axs.plot(x_axis, y_mean, linewidth=3, linestyle='-', label='Fisher+')\n",
    "axs.fill_between(x_axis, y_mean-y_std, y_mean+y_std, alpha=0.15)\n",
    "\n",
    "######################################\n",
    "plt.title('%s: comparision on $||\\mathbf{w}_p-\\mathbf{w}_u||_2/||\\mathbf{w}||_2$'%DATASET, fontsize=15)\n",
    "axs.set_ylabel('$\\ell_2$-norm difference', fontsize=15)\n",
    "axs.set_xlabel('Unlearn percentage (%)', fontsize=15)\n",
    "# axs.xaxis.get_major_locator().set_params(integer=True)\n",
    "axs.grid(True)\n",
    "fig.tight_layout()\n",
    "axs.legend(fontsize=13)\n",
    "plt.xlim(0.1, 1)\n",
    "\n",
    "plt.savefig('%s_weight_diff.pdf'%DATASET, bbox_inches='tight')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
